package com.doit.day01

/**
 * def 方法声明的标志
 * main  方法名称
 * (args: Array[String])   方法的参数列表
 * : Unit 方法返回值类型
 * {} 方法体
 */
object _08_方法 {
  def main(args: Array[String]): Unit = {

    //调用方法：
    // 如果你的方法写在object本类中，那么可以直接用方法名称调用传参
    //如果你的方法写在其他的object类中，那么可以直接用类名点方法名称调用传参
    //如果方法定义在class类中，那么就需要创建class的对象，用对象去调用方法
//    println(add(1, 2))
//
//    val person: Person = new Person
//    val i: Int = person.plus(1, 2)
//    println(i)
//    //类名调用方法
//    AnyThing.add1(1,2)
//
//    sayHello

    println(getMax(1, 2, 3))

    //求三个数得最大值
    def getMax(a:Int,b:Int,c:Int)={
      var max = a
      if(b>max) max = b
      if(c>max) max = c
      max
    }



    //定义一个方法，里面传一个Int类型得值
    //方法体里面，判断传进来得int类型得值是不是在1-9之间
    //如果不在1-9之间，就打印一句话，参数不合法
    //如果在1-9之间 传进去几，打印99乘法表到几

    jiuJiuCFB(5)


  }


  //方法定义
  def add(a:Int,b:Int) ={
    a+b
  }
  //1.方法的返回值类型可以不写
  //2.方法的参数如果一个都没有,定义方法的时候，可以省略掉小括号
  //如果定义的时候，省略了小括号，调用的时候就不能加
  //3.方法的返回值可以不加return 但是如果你加了，那么方法的返回值类型就必须得写

  //定义方法得目的是干啥？一段代码逻辑得封装 便于后续得复用
  def sayHello()={
    println("hello")
  }


  def jiuJiuCFB(num:Int): Unit ={
    if (num >= 1 && num <=9){
      for(i <- 1 to num;j <- 1 to i){
        print(s"${i} * ${j} = ${i*j}\t")
        if(i == j) println()
      }
    }else{
      throw new IllegalArgumentException("参数不合法！！")
    }

  }

}
